Backend-as-a-Service untuk Startup Modern
Modul Interaktif · Kelas 10 Semester 2 · SMK/SMA IT
🎯 Tujuan Pembelajaran: Setelah mempelajari bagian ini, siswa mampu menjelaskan pengertian Supabase dan menyebutkan 3 komponen utama di dalamnya tanpa melihat catatan.
Supabase adalah platform Backend-as-a-Service (BaaS) yang bersifat open source. Artinya, Supabase menyediakan semua kebutuhan backend yang biasanya harus kamu bangun sendiri — seperti database, sistem login, penyimpanan file, dan koneksi realtime — dalam satu paket yang sudah siap pakai.
Kenapa disebut "Backend-as-a-Service"? Karena Supabase menyediakan layanan backend sebagai service — kamu tinggal pakai tanpa perlu mengelola server, instalasi database, atau konfigurasi jaringan. Semuanya sudah diurus oleh Supabase.
Empat komponen utama Supabase adalah: PostgreSQL Database untuk menyimpan data, Authentication untuk login pengguna, Storage untuk menyimpan file, dan Realtime untuk sinkronisasi data secara langsung.
🎯 Tujuan: Siswa mampu membedakan antara Firebase dan Supabase serta menyebutkan 3 keunggulan Supabase.
Sebelum Supabase populer, banyak developer menggunakan Firebase — produk BaaS dari Google. Namun, Firebase memiliki beberapa kelemahan: database NoSQL yang kurang fleksibel untuk data kompleks, sifat closed source yang membuat kode tidak bisa diaudit publik, serta biaya yang membengkak seiring pertumbuhan data. Inilah mengapa Supabase hadir sebagai alternatif modern dengan pendekatan yang lebih terbuka dan fleksibel.
🔥
🚀
💡 Intinya: Supabase unggul di open source, PostgreSQL, dan portability
🎯 Tujuan: Siswa mampu menggambarkan alur data dari Frontend ke Supabase API Gateway kemudian ke masing-masing layanan.
Arsitektur Supabase terdiri dari beberapa lapisan. Di bagian paling depan, ada API Gateway yang menjadi pintu masuk tunggal untuk semua permintaan dari aplikasi klien. Ketika aplikasi kamu melakukan request — misalnya login atau mengambil data — request tersebut masuk ke API Gateway terlebih dahulu. Gateway ini kemudian akan merutekan permintaan ke layanan yang tepat: Auth untuk login, Database untuk query data, Storage untuk file, dan Realtime untuk koneksi langsung.
Keempat layanan ini semuanya terhubung ke PostgreSQL sebagai database utama. Yang menarik, Supabase Realtime bekerja dengan cara mendengarkan perubahan di database PostgreSQL dan menyiarkannya ke semua klien yang terhubung — tanpa perlu polling manual.
Gambar 10.1: Arsitektur Supabase — API Gateway sebagai pintu masuk utama
🎯 Tujuan: Siswa mampu melakukan setup akun Supabase dan menginisialisasi client di kode JavaScript.
Langkah pertama menggunakan Supabase adalah membuat akun di supabase.com. Kamu bisa mendaftar menggunakan email atau akun GitHub. Setelah login, kamu akan membuat proyek baru — beri nama proyekmu dan pilih region server terdekat. Proses pembuatan database memakan waktu sekitar 2-3 menit. Setelah selesai, kamu akan diberikan Project URL dan anon/public API Key — dua informasi penting yang akan kamu gunakan di kode aplikasi.
Buat Akun
supabase.com
New Project
Beri nama
API Keys
URL + Key
Mulai Coding!
npm install
🎯 Tujuan: Siswa mampu menjelaskan konsep Table, Row, dan Column menggunakan analogi lemari arsip.
PostgreSQL adalah sistem database relasional yang sudah terbukti kehandalannya selama lebih dari 30 tahun. PostgreSQL menggunakan format tabel untuk menyimpan data — mirip dengan spreadsheet Excel tapi jauh lebih canggih dan aman. Supabase memilih PostgreSQL karena sifatnya yang open source, stabil, dan memiliki fitur yang sangat lengkap seperti foreign key, indexing, hingga full-text search.
Kumpulan data yang memiliki struktur sama. Contoh: tabel "users" berisi semua data pengguna.
Satu record/entri dalam tabel. Contoh: data diri satu orang pengguna.
Tipe/atribut data. Contoh: nama, email, umur — setiap kolom punya tipe data spesifik.
Hubungan antar tabel. Contoh: produk dimiliki oleh user (relasi one-to-many).
🎯 Tujuan: Siswa mampu menulis query CREATE, INSERT, SELECT, UPDATE, dan DELETE.
SQL (Structured Query Language) adalah bahasa standar yang digunakan untuk berkomunikasi dengan database relasional. Melalui SQL, kamu bisa membuat tabel, menambah data, membaca data, mengubah data, dan menghapus data. Supabase menyediakan SQL Editor di dashboard-nya yang mirip dengan editor kode biasa — lengkap dengan syntax highlighting dan auto-complete. Berikut adalah lima query dasar yang wajib kamu kuasai:
💡 Ingat: DELETE bersifat permanen! Selalu gunakan WHERE untuk filter.
CRUD adalah singkatan dari Create, Read, Update, Delete — empat operasi dasar yang bisa dilakukan pada database manapun. Konsep ini sangat penting karena hampir semua fitur di aplikasi (daftar akun, lihat produk, edit profil, hapus komentar) adalah implementasi dari salah satu operasi CRUD. Memahami CRUD berarti kamu sudah mengerti 80% dari cara kerja backend aplikasi modern.
Gambar 10.2: Empat cabang operasi CRUD pada database
🎯 Tujuan: Siswa mampu membedakan 5 metode autentikasi dan kapan menggunakannya.
Autentikasi adalah proses memverifikasi identitas pengguna — memastikan bahwa pengguna adalah benar-benar dirinya sendiri. Supabase menyediakan 5 metode autentikasi yang bisa kamu pilih sesuai kebutuhan aplikasi. Mulai dari yang klasik (Email/Password) hingga yang modern (Magic Link dan OAuth). Semua metode ini menghasilkan JWT Token — semacam "tiket" digital yang membuktikan bahwa pengguna sudah login.
📧
Password
📱
OTP
Kode sekali
🔗
Magic Link
Tanpa PW
🔵
1 klik
⚫
GitHub
Developer
🏠 Analogi: Lima pintu masuk berbeda menuju rumah (aplikasi) yang sama
OTP (One-Time Password) adalah kode unik yang dikirim ke email atau nomor telepon pengguna dan hanya bisa digunakan satu kali. Metode ini sangat aman karena kode bersifat sementara (biasanya kedaluwarsa dalam 5-10 menit) dan hanya bisa dipakai sekali. Alur kerjanya: user memasukkan email → Supabase mengirim kode OTP → user memasukkan kode → Supabase memverifikasi → mengeluarkan JWT token. Di sisi developer, implementasinya sangat sederhana — cukup dua panggilan fungsi.
Selain OTP, Supabase juga mendukung Magic Link dan OAuth. Magic Link bekerja dengan mengirimkan link khusus ke email pengguna — ketika link itu diklik, pengguna langsung login secara otomatis tanpa perlu memasukkan kode apapun. Sementara OAuth memungkinkan pengguna login menggunakan akun yang sudah mereka miliki — seperti Google atau GitHub — sehingga mereka tidak perlu membuat akun baru. Kedua metode ini meningkatkan User Experience (UX) karena meminimalkan gesekan saat login.
🎯 Tujuan: Siswa mampu menjelaskan konsep bucket, folder, dan perbedaan Public vs Private file.
Supabase Storage adalah layanan untuk menyimpan dan mengelola file — seperti gambar profil, foto produk, dokumen, atau file apapun yang dibutuhkan aplikasi kamu. Konsepnya mirip dengan Google Drive: file disimpan dalam bucket (folder utama), yang bisa diatur aksesnya — Public (bisa diakses siapa saja via URL) atau Private (hanya bisa diakses oleh pengguna tertentu setelah login). Kamu juga bisa membuat Signed URL untuk memberikan akses sementara ke file private.
Siapa saja bisa lihat file di bucket ini via URL publik
File hanya bisa diakses user yang sudah login dan memiliki izin
Proses upload file ke Supabase Storage sangat sederhana. Pertama, kamu panggil fungsi upload() dengan menentukan bucket tujuan dan file yang akan diupload. Setelah file terupload, kamu bisa mendapatkan URL publik untuk mengakses file tersebut. Untuk file di bucket private, kamu perlu membuat Signed URL — yaitu URL yang hanya berlaku sementara (misalnya 1 jam) sehingga tetap aman. Signed URL cocok untuk konten eksklusif seperti dokumen pribadi, foto yang belum dipublikasi, atau akses terbatas.
🎯 Tujuan: Siswa mampu membedakan Realtime, Polling, dan Webhook serta menjelaskan kapan menggunakan Realtime.
Realtime adalah fitur yang memungkinkan data di aplikasi kamu diperbarui secara langsung tanpa perlu me-refresh halaman. Cara kerjanya: Supabase membuka koneksi WebSocket antara server dan semua klien. Ketika ada perubahan di database (misalnya user menambah data baru), Supabase langsung broadcast perubahan tersebut ke semua klien yang terhubung. Berbeda dengan Polling (request berulang setiap beberapa detik) yang boros resource, Realtime hanya mengirim data ketika benar-benar ada perubahan. Fitur ini sangat penting untuk aplikasi chat, dashboard monitoring, dan aplikasi kolaboratif.
📡
Realtime
Push instan
🔄
Polling
Request tiap 5 detik
🔗
Webhook
Notifikasi event
Contoh paling nyata penggunaan Realtime adalah aplikasi chat dan dashboard monitoring. Ketika User A mengirim pesan, data pesan disimpan ke database. Supabase Realtime mendeteksi perubahan ini dan langsung mengirimkannya ke User B, User C, dan semua user lain yang sedang online. Alur ini terjadi dalam hitungan milidetik — tanpa perlu manual refresh. Ini berbeda dengan pendekatan polling yang harus request setiap beberapa detik.
🎯 Tujuan: Siswa mampu menjelaskan cara Laravel terhubung ke Supabase dan kapan menggunakan kombinasi ini.
Laravel sebagai framework backend PHP bisa dengan mudah diintegrasikan dengan Supabase. Pola yang umum digunakan adalah Laravel bertindak sebagai backend API yang memproses logika bisnis, sementara Supabase menangani autentikasi dan database. Laravel berkomunikasi dengan Supabase melalui REST API menggunakan HTTP client seperti Guzzle. Untuk autentikasi, Laravel memverifikasi JWT token yang dikeluarkan oleh Supabase. Kombinasi ini cocok untuk aplikasi enterprise yang membutuhkan logika backend yang kompleks namun tetap ingin memanfaatkan kemudahan BaaS.
Untuk pengembangan mobile, Flutter adalah pilihan yang sangat populer. Supabase menyediakan package resmi supabase_flutter yang membuat integrasi menjadi sangat mudah. Dengan package ini, kamu bisa langsung memanggil fungsi autentikasi, query database, upload file, dan subscribe realtime — semuanya dari sisi Flutter. Alur yang terjadi: Flutter App → Supabase SDK → REST/WebSocket → Supabase Services. Pendekatan ini menghilangkan kebutuhan untuk memiliki backend server sendiri — Flutter bisa langsung terhubung ke Supabase.
📱 Package
supabase_flutter
Official Supabase SDK untuk Flutter
✨ Kemampuan
🎯 Tujuan: Siswa mampu merancang dan menjelaskan arsitektur aplikasi inventori sederhana menggunakan Supabase.
Modern Inventory App adalah aplikasi manajemen inventori produk yang akan menggabungkan SEMUA komponen Supabase yang sudah dipelajari. Aplikasi ini memiliki fitur: login dengan OTP, CRUD produk (tambah, lihat, edit, hapus), upload gambar produk ke Storage, dan update realtime daftar produk. Proyek ini dirancang untuk memberi kamu pengalaman nyata membangun aplikasi full-stack dengan Supabase sebagai backend utama.
🔐
Login OTP
Autentikasi via email
📝
CRUD Produk
Tambah, lihat, edit, hapus
🖼️
Upload Gambar
Storage bucket
📡
Realtime
Update otomatis
💡 Proyek ini menggabungkan database, auth, storage, dan realtime — semua dalam satu aplikasi!
Untuk aplikasi inventori, kita membutuhkan setidaknya dua tabel yang saling berelasi. Tabel users untuk menyimpan data pengguna, dan tabel products untuk menyimpan data produk. Relasi antara keduanya adalah one-to-many — satu user bisa memiliki banyak produk (foreign key user_id di tabel products). Perhatikan bahwa kolom user_id di tabel products menggunakan REFERENCES users(id) — ini memastikan bahwa setiap produk selalu terhubung ke user yang valid.
Berikut adalah gambaran lengkap alur data pada Modern Inventory App. Aplikasi Flutter akan terhubung ke Supabase melalui SDK bawaan. Auth OTP untuk login, Database PostgreSQL untuk menyimpan data, Storage untuk menyimpan gambar produk, dan Realtime untuk update daftar produk secara otomatis. Perhatikan bahwa Realtime (RT) bertindak sebagai penghubung — ketika ada perubahan data di database, semua perangkat yang terhubung akan langsung mendapat update.
🔴 OTP Auth · 🟢 Database · 🟣 Storage · ⚡ Realtime (RT)
Selamat! Kamu telah mempelajari seluruh komponen utama Supabase — dari konsep dasar, database PostgreSQL, autentikasi, penyimpanan file, realtime, hingga integrasi dengan Laravel dan Flutter. Berikut ringkasan poin-poin penting yang harus kamu ingat:
🗄️
PostgreSQL
Database relasional yang handal dengan SQL
🔐
Authentication
Email, OTP, Magic Link, OAuth — 5 metode pilihan
☁️
Storage
Simpan file di bucket Public atau Private
📡
Realtime
Update data secara instan ke semua pengguna
💻
Integrasi
Laravel & Flutter dengan Supabase SDK
🚀
Open Source
Gratis, transparan, dan portable
Uji pemahamanmu dengan menjawab 5 soal berikut! ⭐
Identifikasi setiap komponen dalam arsitektur Supabase berikut!
Petunjuk lengkap — Kerjakan dengan rapi!
✅ Tugas 1: Setup Akun Supabase
Buat akun di supabase.com (gratis). Screenshoot halaman dashboard setelah membuat proyek pertama. Pastikan Project URL dan API Key terlihat jelas di screenshot.
✅ Tugas 2: Rancang Database Schema
Buat skema tabel untuk Modern Inventory App minimal 2 tabel (users dan products) dengan relasi foreign key. Tentukan tipe data yang tepat untuk setiap kolom.
✅ Tugas 3: Tulis 5 Query SQL
(1) CREATE TABLE untuk kedua tabel, (2) INSERT 3 data produk, (3) SELECT dengan WHERE, (4) UPDATE 1 data, (5) DELETE 1 data.
✅ Tugas 4: Analisis Metode Auth
Menurutmu, metode autentikasi apa yang paling cocok untuk aplikasi inventori? Jelaskan alasanmu dalam minimal 3 kalimat!
📤 Format Pengumpulan
Screenshot dashboard + file schema.sql + dokumen penjelasan → kumpulkan ke guru kelas.
⏰ Deadline: Sesuai jadwal dari guru kelas
Selamat! Kamu telah menyelesaikan Bab 10: Supabase Modern Backend.
Kamu sekarang memiliki pemahaman dasar tentang bagaimana membangun backend aplikasi modern menggunakan Supabase. Dengan PostgreSQL, Authentication, Storage, dan Realtime — kamu sudah punya bekal yang cukup untuk mulai membangun aplikasi full-stack nyata.
Jangan berhenti di sini — coba buat proyek kecil-kecilan dan eksplorasi lebih jauh!
"The best way to learn is to build." — Tech Community